📝 Резюме · 📄 Оригинал (669 B)
https://t.me/Python_libr/3376

Pydantic — умопомрачительная валидация данных на Python

Источник: https://t.me/Python_libr/3376


Что такое Pydantic?

Pydantic — мощная библиотека для валидации и сериализации данных в Python. Она построена на аннотациях типов (type hints) и автоматически проверяет данные при создании объектов моделей. Используется в FastAPI, LangChain, Anthropic Claude SDK и других проектах.

Базовый пример использования

from pydantic import BaseModel, EmailStr, Field
from typing import Optional

class User(BaseModel):
    name: str
    age: int = Field(..., ge=0, le=150)  # от 0 до 150
    email: EmailStr
    phone: Optional[str] = None

# Создание с валидацией
user = User(
    name="Пётр",
    age=30,
    email="peter@example.com"
)
print(user.model_dump())
# {'name': 'Пётр', 'age': 30, 'email': 'peter@example.com', 'phone': None}

# JSON представление
print(user.model_dump_json())
# {"name":"Пётр","age":30,"email":"peter@example.com","phone":null}

# Ошибка валидации
try:
    bad = User(name="Пётр", age=200, email="bad")
except Exception as e:
    print(e)  # ValidationError: age must be <= 150

Вложенные модели

from pydantic import BaseModel
from typing import List

class Address(BaseModel):
    city: str
    street: str
    zip_code: str

class Person(BaseModel):
    name: str
    address: Address
    friends: List[str] = []

# Автоматическая валидация вложенных данных
person = Person(
    name="Иван",
    address={
        "city": "Москва",
        "street": "Красная площадь",
        "zip_code": "109012"
    },
    friends=["Мария", "Алексей"]
)

Диаграмма процесса валидации

graph LR
    A["Входные данные<br/>(dict, JSON)"] --> B{Pydantic<br/>BaseModel}
    B -->|Валидно| C["Типизированный<br/>объект"]
    B -->|Ошибка| D["ValidationError<br/>с деталями"]
    C --> E["model_dump()<br/>JSON Schema"]

Ключевые возможности

  • Автоматическое приведение типов: строка "42" автоматически становится числом 42
  • Вложенные модели: модели могут содержать другие модели
  • Кастомные валидаторы: использование декоратора @field_validator
  • JSON Schema: автоматическая генерация OpenAPI схемы
  • Сериализация: простой экспорт в JSON, dict, ORM объекты
  • Конфигурация: класс model_config для управления поведением

Применение

Pydantic незаменим при разработке:

  • REST API с FastAPI — валидация запросов и ответов
  • ETL пайплайны — проверка качества входящих данных
  • Конфигурационные файлы — валидация settings и env переменных
  • Научные приложения — строгая типизация данных анализа